import type { PageParam, PageResult } from '@vben/request';

import { requestClient } from '#/api/request';

export namespace AiFormFieldApi {
  /** 表单常用字段信息 */
  export interface FormField {
    id: number; // 表单变量id
    name?: string; // 变量名
    displayName: string; // 显示名称
    javaType: string; // 字段类型
    htmlType: string; // 表单类型
    dataType: string; // 数据类型
    defaultValue: string; // 默认值
    description: string; // 变量填写说明
    required: number; // 是否必填
    validationRules: string; // 验证规则
    sort: number; // 排序
    metadata: string; // 其他参数
    parentId: number; // 上级变量id
    displayFlag: boolean; // 是否显示
    disabled: number; // 是否可编辑
    example: string; // 示例
    classify: string; // 分类
  }
}

/** 查询表单常用字段分页 */
export function getFormFieldPage(
  data: PageParam,
  desensitize: boolean,
  encrypt: boolean,
) {
  return requestClient.post<PageResult<AiFormFieldApi.FormField>>(
    '/ai/form-field/page',
    data,
    {
      desensitize,
      encrypt,
    },
  );
}

/** 查询表单常用字段详情 */
export function getFormField(id: number) {
  return requestClient.get<AiFormFieldApi.FormField>(
    `/ai/form-field/get?id=${id}`,
  );
}

/** 新增表单常用字段 */
export function createFormField(data: AiFormFieldApi.FormField) {
  return requestClient.post('/ai/form-field/create', data);
}

/** 修改表单常用字段 */
export function updateFormField(data: AiFormFieldApi.FormField) {
  return requestClient.put('/ai/form-field/update', data);
}

/** 删除表单常用字段 */
export function deleteFormField(id: number) {
  return requestClient.delete(`/ai/form-field/delete?id=${id}`);
}

/** 批量删除表单常用字段 */
export function deleteFormFieldList(ids: number[]) {
  return requestClient.delete(
    `/ai/form-field/delete-list?ids=${ids.join(',')}`,
  );
}

/** 导出表单常用字段 */
export function exportFormField(params: any) {
  return requestClient.download('/ai/form-field/export-excel', { params });
}
